package com.behelpful.demo.quartz.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.behelpful.demo.quartz.enums.JobStatusEnum;
import com.behelpful.demo.quartz.enums.JobTypeEnum;
import com.behelpful.demo.quartz.enums.MisfirePolicyEnum;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 定时任务实体类
 *
 * @author Alay
 * @date 2021-10-31 17:07
 * @since
 */
@Data
@AllArgsConstructor
@ApiModel(value = "定时任务实体类")
@TableName(value = "System_job")
public class SystemJob extends Model<SystemJob> {
    private static final long serialVersionUID = 1L;

    /**
     * JobId 任务Id
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "JobId 任务Id")
    private Integer jobId;

    /**
     * 任务名称
     */
    @ApiModelProperty(value = "任务名称")
    private String jobName;

    /**
     * 任务组名
     */
    @ApiModelProperty(value = "任务名称")
    private String jobGroup;

    /**
     * 任务执行类IOC容器中的名称
     */
    @ApiModelProperty(value = "任务执行类IOC容器中的名称")
    private String taskClazzName;

    /**
     * 任务方法名称
     */
    @ApiModelProperty(value = "任务方法名称")
    private String methodName;

    /**
     * REST 模式请求数据关联Id（可选的）
     */
    @ApiModelProperty(value = " REST 模式请求数据关联Id(可选的)")
    private String restId;
    /**
     * 任务类型
     */
    @ApiModelProperty(value = "任务类型")
    private JobTypeEnum jobType;
    /**
     * 执行参数值
     */
    @ApiModelProperty(value = "执行参数")
    private String params;

    /**
     * cron执行表达式
     */
    @ApiModelProperty(value = "cron执行表达式")
    private String cronExpression;

    /**
     * 错失执行策略
     */
    @ApiModelProperty(value = "错失执行策略")
    private MisfirePolicyEnum misfirePolicy;

    /**
     * 任务状态
     */
    @ApiModelProperty(value = "任务状态")
    private JobStatusEnum jobStatus;

    /**
     * 任务描述
     */
    @ApiModelProperty(value = "任务描述")
    private String description;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者")
    private String createBy;
    /**
     * 最后操作者
     */
    @ApiModelProperty(value = "最后操作者")
    private String lastOperatives;
    /**
     * 租户Id
     */
    @ApiModelProperty(value = "租户Id")
    private String tenantId;
    /**
     * 逻辑删除
     */
    @TableLogic
    @JsonIgnore
    @TableField(select = false)
    @ApiModelProperty(value = "逻辑删除")
    private Boolean isDelete;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateTime;

}
